//重新分装苹果
/*给你一个长度为 n 的数组 apple 和另一个长度为 m 的数组 capacity 。

一共有 n 个包裹，其中第 i 个包裹中装着 apple[i] 个苹果。同时，还有 m 个箱子，第 i 个箱子的容量为 capacity[i] 个苹果。

请你选择一些箱子来将这 n 个包裹中的苹果重新分装到箱子中，返回你需要选择的箱子的 最小 数量。

注意，同一个包裹中的苹果可以分装到不同的箱子中。
1 <= n == apple.length <= 50
1 <= m == capacity.length <= 50
1 <= apple[i], capacity[i] <= 50
输入数据保证可以将包裹中的苹果重新分装到箱子中。
*/
int compar(const void* q1, const void* q2) {
    return (*((int*)(q1)) - *((int*)(q2)));
}
int minimumBoxes(int* apple, int appleSize, int* capacity, int capacitySize) {
    int apple_sum = 0;
    for (int i = 0; i < appleSize; i++) {
        apple_sum += apple[i];
    }
    qsort(capacity, capacitySize, sizeof(int), compar);
    for (int i = capacitySize - 1; i >= 0; i--) {
        apple_sum -= capacity[i];
        if (apple_sum <= 0)
            return capacitySize - i;
    }
    return 0;
}




//查询后的偶数和
/*给出一个整数数组 A 和一个查询数组 queries。

对于第 i 次查询，有 val = queries[i][0], index = queries[i][1]，我们会把 val 加到 A[index] 上。然后，第 i 次查询的答案是 A 中偶数值的和。

（此处给定的 index = queries[i][1] 是从 0 开始的索引，每次查询都会永久修改数组 A。）

返回所有查询的答案。你的答案应当以数组 answer 给出，answer[i] 为第 i 次查询的答案。
1 <= A.length <= 10000
-10000 <= A[i] <= 10000
1 <= queries.length <= 10000
-10000 <= queries[i][0] <= 10000
0 <= queries[i][1] < A.length
*/
int* sumEvenAfterQueries(int* nums, int numsSize, int** queries,
                         int queriesSize, int* queriesColSize,
                         int* returnSize) {
    *returnSize = queriesSize;
    int* find_nums = (int*)calloc(numsSize, sizeof(int));
    int* arr = (int*)calloc(queriesSize, sizeof(int));
    int sum = 0;
    for (int i = 0; i < numsSize; i++) {
        if (nums[i] % 2 == 0)
            sum += nums[i];
        find_nums[i] = nums[i];
    }
    for (int i = 0; i < queriesSize; i++) {
        nums[queries[i][1]] += queries[i][0];
        if (find_nums[queries[i][1]] % 2) {
            if (nums[queries[i][1]] % 2 == 0) {
                find_nums[queries[i][1]] = nums[queries[i][1]];
                sum += nums[queries[i][1]];
            }
        } else {
            if (nums[queries[i][1]] % 2) {
                sum -= find_nums[queries[i][1]];
                find_nums[queries[i][1]] = nums[queries[i][1]];
            } else {
                sum += queries[i][0];
                find_nums[queries[i][1]] = nums[queries[i][1]];
            }
        }
        arr[i] = sum;
    }
    return arr;
}